package com.itheima.activiti.service.activiti;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.activiti.dto.activiti.CompleteDTO;
import com.itheima.activiti.dto.activiti.ProcessActivityDTO;
import com.itheima.activiti.dto.activiti.RejectDTO;
import com.itheima.activiti.dto.activiti.TaskDTO;
import com.itheima.activiti.dto.dto.HistoryDetailDTO;
import com.itheima.activiti.dto.system.UserDTO;

import java.io.InputStream;
import java.util.List;

public interface AssignmentService {
    /**
     * 撤回任务
     *
     * @param taskId
     * @param comment
     */
    void recall(String taskId, String comment);

    /**
     * 终止任务
     *
     * @param taskId
     * @param comment
     */
    void terminate(String taskId, String comment);

    /**
     * 查询所有待办任务
     * @param taskName
     * @param processDefinationName
     * @param page
     * @param pageSize
     * @return
     */
    Page<TaskDTO> queryToDoTasks(String taskName, String processDefinationName, int page, int pageSize);


    /**
     * 审批通过，当前任务设置为完成状态
     */
    void complete(CompleteDTO completeDTO);

    /**
     * 已办
     *
     * @param page
     * @param pageSize
     * @return
     */
    Page<ProcessActivityDTO> queryDoneTasks(int page, int pageSize);

    /**
     * 查询驳回人列表
     * @param taskId
     * @return
     */
    List<UserDTO> getRejectUser(String taskId);

    /**
     * 审批不通过
     */
    void reject(RejectDTO rejectDTO);
//获取流程动态图
    InputStream getProcessInstanceDiagram(String processInstanceId);
//历史任务列表
    List<HistoryDetailDTO> historyTaskList(String processInstanceId);
}
